In some instances, data within databases is organized hierarchically or in a tree-like structure. A root data item might contain several children data items. One or more of the children data items contains sub-children data items. For example, a University has several courses. Each course has a professor and a student list. The data is organized in a hierarchy. The root node is the University. The University node contains a first course and a second course. The first course contains a first professor and first and second students. The second course contains a second professor and third and fourth students. Such a hierarchically organized database has disadvantages. One disadvantage is that the entire hierarchy must be parsed to get to the relevant data. For example, if a user wanted to find a list of the students at the University, the system would parse each course to extract the students enrolled in each course. Another disadvantage is that the number of relationships between data items is limited. For example, a user cannot determine which courses a student is enrolled in without parsing each course individually and searching for that student.
In other instances, data within databases is organized by relationships in a relational database. Any number of data items might exist and have any number of relationships, or pointers, to other data items. Using the above example, the second course would have a relationship to the first course. The first professor would have a relationship to the first course and to the second professor. In addition, in this relational database, the first and second students might have relationships to the third and fourth students.
Typically, data is extracted from the relational database and constructed in a hierarchical data model. For example, the above data items would be extracted and a hierarchy formed which includes the first and second courses having the first and second professors, respectively. Such programming methodologies have disadvantages. One such disadvantage is that if a user requests additional information, such as what courses a student is enrolled in, the system must now query the database for the additional information.